From: Georges Basile Stavracas Neto Date: Wed, 29 Aug 2018 01:37:27 +0000 (-0300) Subject: panel: Delegate container destruction to PanelMenu.ButtonBox X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~897^2~1^2~82 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=557b232c8964fbe5b5cbbbdc53d6af65dd010fd0;p=gnome-shell.git panel: Delegate container destruction to PanelMenu.ButtonBox Instead of taking care of the PanelMenu.ButtonBox.container destruction by itself, delegate that to the very object that created it in the first place: PanelMenu.ButtonBox itself. --- diff --git a/js/ui/panel.js b/js/ui/panel.js index e61557ab9..49759af4c 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js @@ -1158,7 +1158,6 @@ var Panel = new Lang.Class({ let destroyId = indicator.connect('destroy', emitter => { delete this.statusArea[role]; emitter.disconnect(destroyId); - container.destroy(); }); indicator.connect('menu-set', this._onMenuSet.bind(this)); this._onMenuSet(indicator); diff --git a/js/ui/panelMenu.js b/js/ui/panelMenu.js index 6f496db97..401419dec 100644 --- a/js/ui/panelMenu.js +++ b/js/ui/panelMenu.js @@ -30,6 +30,8 @@ var ButtonBox = new Lang.Class({ child: this.actor }); this.connect('style-changed', this._onStyleChanged.bind(this)); + this.connect('destroy', this._onDestroy.bind(this)); + this._minHPadding = this._natHPadding = 0.0; }, @@ -90,6 +92,11 @@ var ButtonBox = new Lang.Class({ child.allocate(childBox, flags); }, + + _onDestroy() { + this.container.child = null; + this.container.destroy(); + }, }); var Button = new Lang.Class({ @@ -106,7 +113,6 @@ var Button = new Lang.Class({ this.connect('event', this._onEvent.bind(this)); this.connect('notify::visible', this._onVisibilityChanged.bind(this)); - this.connect('destroy', this._onDestroy.bind(this)); if (dontCreateMenu) this.menu = new PopupMenu.PopupDummyMenu(this.actor); @@ -190,6 +196,8 @@ var Button = new Lang.Class({ }, _onDestroy() { + this.parent(); + if (this.menu) this.menu.destroy(); }